using System;
using System.Collections.Generic;
using System.Text;
using Mpi.Common.Collections;


namespace Xeml.Document.Contracts
{
    /// <summary>
    /// A contract about validation components.
    /// </summary>
    public interface IValidator : IValidationSource, IXemlComponent
    {
      

        /// <summary>
        /// Validates a whole xeml document.
        /// </summary>
        /// <param name="xemlDoc">The xeml document to be validated.</param>
        void Validate(IDocument xemlDoc);
    }

    /// <summary>
    /// A contract about validation components which are firing validation events.
    /// </summary>
    public interface IValidationSource
    {
        event System.EventHandler<ValidationMessage> Validation;
    }

}
